class MayBe{
    static of (value){
        return new MayBe(value)
    }
    constructor(value){
        this._value = value
    }
    
    map(fn){
        return this.isnull() ? MayBe.of(null):MayBe.of(fn(this._value))
    }
    //创建一个辅助函数来判断外部值是否为空
    isnull(){
        return this._value===null||this._value===undefined
    }
}
// let a = MayBe.of('hello word')
//     .map(x => x.toUpperCase())
//     console.log(a)
let b = MayBe.of(null)
    .map(x=>x.toUpperCase())
    console.log(b)